#define  _CRT_SECURE_NO_WARNINGS 1
//#include"head.h"

//strstr
//const char* strstr(const	char* str1, const char* str2);
//		char* strstr(		char* str1, const char* str2);
//在字符串中找子字符串，返回子字符串的起始位置
// 
//在str1中查找str2这个字符串，第一次出现的位置
// 如果找到了，则返回起始地址
// 如果找不到，则返回NULL


//int main()
//{
//	char str1[] = "abcdefghijklmnopdeftuvwxyz";
//	char str2[] = "def";
//	const char* p = strstr(str1, str2);
//	if (p)
//	{
//		printf("%s\n", p);
//	}
//	else
//	{
//		printf("not found\n");
//	}
//	return 0;
//}


//模拟实现
// 
// 1、abcdefgh
//    abc
// 
// 2、abcdefgh
//    def
// 
// 3、abcdefgh
//    ghi / dep
// 
// 4、abbbbcdefgh
//    bbc


//const char* my_strstr(const char* str1, const char* str2)
//{ 
//    while (*str1)
//    {
//        const char* p1 = str1;
//        const char* p2 = str2;
//        while (*p1 == *p2 && *p2)
//        {
//            p1++;
//            p2++;
//        }
//        if (*p2 == '\0')
//        {
//            return str1;
//        }
//        str1++;
//    }
//    return NULL;
//}


//常规暴力查找
//const char* my_strstr(const char* str1, const char* str2)
//{
//    const char* s1 = NULL;
//    const char* s2 = NULL;
//    const char* cur = str1;
//
//    assert(str1 && str2);
//
//    if(*str2 == '\0') // 空串
//        return str1;
//
//    while (*cur)
//    {
//        s1 = cur;
//        s2 = str2;
//        while (*s2 && *s1 && *s1 == *s2)// '\0'的ASCII码为0
//        {
//            s1++;
//            s2++;
//        }
//        if (*s2 == '\0')
//        {
//            return cur;
//        }
//        cur++;
//    }
//
//    return NULL;
//}
//
//int main()
//{
//    char str1[] = "abbbcdefghijklmnopdeftuvwxyz";
//    char str2[] = "bbc";
//    const char* p = my_strstr(str1, str2);
//    if (p)
//    {
//        printf("%s\n", p);
//    }
//    else
//    {
//        printf("not found\n");
//    }
//    return 0;
//}

//关于字符串的查找有一种算法叫——KMP算法
//高效、难理解